package com.gqh.weather.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gqh.weather.domain.dto.StudentListData;
import com.gqh.weather.domain.dto.StudentTicketDTO;
import com.gqh.weather.domain.entity.Student;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @description 学生信息管理数据访问接口
 * @author AI
 * @date 2025-09-21
 */
@Mapper
public interface StudentMapper extends BaseMapper<Student> {
    
    /**
     * 查询学生列表并附带详细信息
     * 
     * @param page 分页对象
     * @param taskId 任务ID
     * @param state 状态（可选）
     * @param schoolId 学校ID（可选）
     * @param isPic 照片过滤（0全部 1已上传 2未上传）
     * @param keyword 关键字（可选）
     * @param codes 城市代码列表（可选）
     * @return 分页结果对象
     */
    Page<StudentListData> selectStudentListWithDetails(@Param("page") Page<StudentListData> page,
                                                        @Param("taskId") Integer taskId,
                                                        @Param("state") Integer state,
                                                        @Param("schoolId") Integer schoolId,
                                                        @Param("isPic") Integer isPic,
                                                        @Param("keyword") String keyword,
                                                        @Param("codes") List<String> codes);
    
    /**
     * 查询学生照片列表
     * 
     * @param taskId 任务ID
     * @param codes 城市代码列表（可选）
     * @return 学生照片列表
     */
    List<StudentListData> selectStudentPicList(@Param("taskId") Integer taskId,
                                               @Param("codes") List<String> codes);
    
    /**
     * 查询学生准考证信息列表
     * 
     * @param taskId 任务ID
     * @return 学生准考证信息列表
     */
    List<StudentTicketDTO> selectStudentTicketList(@Param("taskId") Integer taskId);
    
}